package org.summer.lawyer.domain.vo.spuorderassign;

import io.github.linpeilie.annotations.AutoMapper;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.summer.lawyer.domain.SpuOrderAssign;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;



/**
 * 派单视图对象 spu_order_assign
 *
 * @author summer
 * @date 2024-06-27
 */
@Schema(title ="派单视图对象 spu_order_assign", description = "派单视图对象 spu_order_assign")
@Data
@AutoMapper(target = SpuOrderAssign.class)
public class SpuOrderAssignVo implements Serializable{

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @Schema(title = "id", type = "Long", description = "主键ID")
    private Long id;

    /**
     * 订单ID
     */
    @Schema(title = "orderId", type = "Long", description = "订单ID")
    private Long orderId;

    /**
     * 用于追踪的订单编号
     */
    @Schema(title = "trackingNumber", type = "String", description = "用于追踪的订单编号（不显示给用户看）")
    private String trackingNumber;

    /**
     * 派单时间
     */
    @Schema(title = "dispatchTime", type = "Date", description = "派单时间")
    private Date dispatchTime;

    /**
     * 派单员ID
     */
    @Schema(title = "dispatchUserId", type = "Long", description = "派单员ID")
    private Long dispatchUserId;

    /**
     * 派单员姓名
     */
    @Schema(title = "dispatchName", type = "String", description = "派单员姓名")
    private String dispatchName;

    /**
     * 状态（Pending=待处理，Processing=待接单(已分派，还没接单），Confirmed=处理中（已确认，待处理完成），Completed=申请完成（律师端已经处理完成，等用户确认完成），Finished=已完成（用户确认完成），Returned=已退回）
     */
    @Schema(title = "dispatchStatus", type = "String", description = "状态（Pending=待处理，Processing=处理中(已分派，还没接单），Confirmed=已接单，Completed=处理完成，Returned=已退回）")
    private String dispatchStatus;

    /**
     * 微信用户ID
     */
    @Schema(title = "wxUserId", type = "Long", description = "微信用户ID")
    private Long wxUserId;

    /**
     * 处理律师ID
     */
    @Schema(title = "lawyerId", type = "Long", description = "处理律师ID")
    private Long lawyerId;

    /**
     * 处理律师姓名
     */
    @Schema(title = "lawyerName", type = "String", description = "处理律师姓名")
    private String lawyerName;

    /**
     * 处理律所ID
     */
    @Schema(title = "lawFirmId", type = "Long", description = "处理律所ID")
    private Long lawFirmId;

    /**
     * 处理律所名称
     */
    @Schema(title = "lawFirmName", type = "String", description = "处理律所名称")
    private String lawFirmName;

    /**
     * 处理律师头像
     */
    @Schema(title = "lawyerAvatar", type = "String", description = "处理律师头像")
    private String lawyerAvatar;

    /**
     * 开始处理时间
     */
    @Schema(title = "handleTime", type = "Date", description = "开始处理时间")
    private Date handleTime;

    /**
     * 处理截止日期
     */
    @Schema(title = "deadline", type = "Date", description = "处理截止日期")
    private Date deadline;

    /**
     * 是否超时（0没有超时，1已经超时）
     */
    @Schema(title = "overtime", type = "String", description = "是否超时（0没有超时，1已经超时）")
    private String overtime;

    /**
     * 撤回时间
     */
    @Schema(title = "returnedTime", type = "Date", description = "撤回时间")
    private Date returnedTime;

    /**
     * 撤回原因
     */
    @Schema(title = "returnedDesc", type = "String", description = "撤回原因")
    private String returnedDesc;

    /**
     * 完成时间
     */
    @Schema(title = "completionTime", type = "Date", description = "完成时间")
    private Date completionTime;

    /**
     * 是否激活状态,同时只有一个派单处于激活状态（0已关闭，1激活状态）
     */
    @Schema(title = "active", type = "String", description = "是否激活状态,同时只有一个派单处于激活状态（0已关闭，1激活状态）")
    private String active;

    /**
     * 商品ID
     */
    @Schema(title = "spuId", type = "Long", description = "商品ID")
    private Long spuId;

    /**
     * 商品名称
     */
    @Schema(title = "spuName", type = "String", description = "商品名称")
    private String spuName;

    /**
     * 商品分类ID
     */
    @Schema(title = "categoryId", type = "Long", description = "商品分类ID")
    private Long categoryId;

    /**
     * 商品分类名称
     */
    @Schema(title = "categoryName", type = "String", description = "商品分类名称")
    private String categoryName;

    /**
     * 商品主图片
     */
    @Schema(title = "spuImage", type = "String", description = "商品主图片")
    private String spuImage;

    /**
     * 商品价格(单位分）
     */
    @Schema(title = "spuPrice", type = "Long", description = "商品价格(单位分）")
    private Long spuPrice;

    /**
     * 商品数量
     */
    @Schema(title = "spuCount", type = "Long", description = "商品数量")
    private Long spuCount;

    /**
     * 商品总价(单位分）
     */
    @Schema(title = "spuTotalAmount", type = "Long", description = "商品总价(单位分）")
    private Long spuTotalAmount;

    /**
     * 附件
     */
    @Schema(title = "spuFile", type = "String", description = "附件")
    private String spuFile;

    /**
     * 订单编号
     */
    @Schema(title = "orderNumber", type = "String", description = "订单编号，律师端展示订单编号")
    private String orderNumber;

    /**
     * 订单状态(PENDING=待处理，Paid=已付款，Processing=处理中，Completed=已完成，Cancelled=已取消，Refunded=已退款）
     */
    @Schema(title = "orderStatus", type = "String", description = "订单状态(PENDING=待处理，Paid=已付款，Processing=处理中，Completed=已完成，Cancelled=已取消，Refunded=已退款）")
    private String orderStatus;

    /**
     * 服务类型
     */
    @Schema(title = "serviceType", type = "String", description = "服务类型")
    private String serviceType;

    /**
     * 联系电话
     */
    @Schema(title = "contactPhone", type = "String", description = "联系电话")
    private String contactPhone;

    /**
     * 下单用户ID
     */
    @Schema(title = "userId", type = "Long", description = "下单用户ID")
    private Long userId;

    /**
     * 下单用户姓名
     */
    @Schema(title = "userName", type = "String", description = "下单用户姓名")
    private String userName;

    /**
     * 下单时间
     */
    @Schema(title = "orderTime", type = "Date", description = "下单时间")
    private Date orderTime;

    /**
     * 订单金额（单位分）
     */
    @Schema(title = "amount", type = "Long", description = "订单金额（单位分）")
    private Long amount;


    /**
     * 支付金额（单位分）
     */
    @Schema(title = "paymentAmount", type = "Long", description = "支付金额（单位分）")
    private Long paymentAmount;


    /**
     * 支付时间
     */
    @Schema(title = "paymentTime", type = "Date", description = "支付时间")
    private Date paymentTime;

    /**
     * 交易ID
     */
    @Schema(title = "transactionId", type = "String", description = "交易ID")
    private String transactionId;

    /**
     * 评价状态(0待评价，已评价）
     */
    @Schema(title = "review", type = "String", description = "评价状态(0待评价，已评价）")
    private String review;

    /**
     * 备注
     */
    @Schema(title = "orderRemark", type = "String", description = "备注")
    private String orderRemark;

    /**
     * 是否已经支付 (0 未支付，1已支付）
     */
    @Schema(title = "payed", type = "String", description = "是否已经支付 (0 未支付，1已支付）")
    private String payed;

    /**
     * 取消时间
     */
    @Schema(title = "cancellationTime", type = "Date", description = "取消时间")
    private Date cancellationTime;

    /**
     * 订单关闭原因1-超时未支付 2-买家取消
     */
    @Schema(title = "closeType", type = "String", description = "订单关闭原因1-超时未支付 2-买家取消")
    private String closeType;

    /**
     * 是否需要指派律师处理（0不需要，1需要）
     */
    @Schema(title = "dispatchable", type = "String", description = "是否需要指派律师处理（0不需要，1需要）")
    private String dispatchable;

    /**
     * 接收文件邮箱
     */
    @Schema(title = "email", type = "String", description = "接收文件邮箱")
    private String email;

    /**
     * 是否申请完成,0未申请，1已申请
     */
    @Schema(title = "processedStatus", type = "String", description = "是否申请完成,0未申请，1已申请")
    private String processedStatus;

    /**
     * 申请完成时间
     */
    @Schema(title = "processedTime", type = "Date", description = "申请完成时间")
    private Date processedTime;

    /**
     * 结单时间
     */
    @Schema(title = "finishedTime", type = "Date", description = "结单时间")
    private Date finishedTime;



}
